1. Field of the Invention
The present invention is generally related to personal and pervasive computing, and, more particularly, to preparing and executing computing tasks.
2. Description of the Related Art
Current State of Computing: Personal Computing
Personal computing is the paradigm of a user operating a single device and accessing/using the applications that reside on that device. Personal computing requires that the user has a sufficient understanding of her computing environment and of the applications that are available on her machine, so that the knowledgeable user can adequately utilize the available resources to execute complex tasks. This is computing as most of us experience it on a daily basis; the burden of learning how to achieve complex tasks resides with the user, who has to understand each of the applications running on her machine and of the functions that they support, to manually transfer data between applications (cut & paste), to manually invoke each application and the specific functionality that relates to the task and to eventually devote her full attention (and time) to the execution of the complex task. Accomplishing complex tasks relies on the user's understanding of the task on one hand and of the available resources (devices and applications) on the other, so that the user herself can combine them into a workflow that the user will execute and the final outcome of which will be a completed task.
Early Examples of a Shift from Personal Computing
We will briefly discuss some examples, outlining the technical aspects of them and pointing to their limitations. These examples indicate a more task-oriented view of the personal computing environment
In one feature of an operating system, when the user inserts a music CD into the CD tray, a window pops up suggesting to the user tasks he/she can perform from that point on. A typical listing of these options includes:
Play Audio CD
Copy Music from CD
Open folder to view files
Take no action
Each of these options also mentions the application to be used to perform the action. The focus is on the action, or task to be performed rather than the application used to perform the task.
Similarly, if a digital video camera is connected to the computer a pop window pops-up with the following possible actions for the user to perform:
Record Video
Capture Video
Perform no action
In either case, the operating system uses a pre-specified list of actions, or tasks, that is associated with the occurrence of a specific event (inserting a music CD, or connecting a digital camera), so that when the event occurs, the relevant listing of actions is presented to the user to act upon. In that sense, the system's response is hardwired and does not include flexibility beyond that which as been programmed into the system as to the possible actions to be performed as a result of the triggering event. In other words, the system shows the same set of the actions that can take place when a digital camera is connected to the computer; the programmer of the operating system has prepared this specific list of actions for the particular event. Applications can change the items in the list, but there is not an easy way for end-users to change it.
In another feature of an operating system, the user is presented with a choice of actions. That is, a separate list of tasks is presented to the user for each of the following file types: Documents, Pictures, Photo Album, Music, Music Artist, Music Album, and Videos. For example, if the file type is a picture, a list of “picture tasks” is presented:
View (pictures) as a slide show
Order prints online
Print the picture
Set the picture as background
Copy pictures to a CD
This list of tasks is again pre-compiled and associated with the specific file type. There is not an easy way for end-users to modify the list. As in the other examples, the focus is on the task that can be performed and not on the application to be used for executing the task. Moreover the user does not need to know which application will be used for the task. If the user chooses to execute one of the suggested tasks, the proper application will be instantiated accordingly and invoked (launched).
In an example of office suite software, a smart tags feature is available. The smart tag feature highlights text in the current document while using an editor and offers the user a drop down menu of actions that can be performed with the object that that text denotes. For example, if the text represents a name, then this feature may identify the object associated with that name to be a person, and may offer the following list of possible actions:
Send mail (to that person)
Schedule a meeting (with that person)
Open Contact (of that person)
Create a Contact (for that person)
The options are enabled by identifying that the string of characters in the document might represent a name. The system relies on the syntactic features of the text to identify that this particular piece of text represents a name. Note, that a string of characters that does not resemble a typical American name (e.g., Lusheng Ji), may not be identified as a name related to a person. The reason is that the part of the system that identifies a piece of text as a name is a pretty simple program (script) that attempts to identify easily identifiable patterns in the syntactic form of the text. Once the “nature” of the text is identified (correctly or incorrectly), e.g., person, address, etc., a pre-compiled list of possible actions is presented to the user. It is possible for application programmers to create smart tags for other domains and applications, such as identifying addresses and invoking a map application, etc.
Another example of an attempt to present to the user a more task-oriented view of the computing environment is now discussed. When a user types an address in the search box of a search engine, the service will return (above the usual search results) a link to a mapping function that, if followed, will provide a map of the address.
However, it is not obvious that the user might be searching for the map of the typed address. Other reasonable possibilities exist: the user might want a phone number listing associated with this address, or if that address is a business, the user might want to see this business' BETTER BUSINESS BUREAU record, or to check the weather in that vicinity, and so on. In its current form, the search engine guesses what type of “thing” (in this case an address) the typed text stands for and it returns a hard-wired task associated with this type of entry.
In Summary
All the examples mentioned above exhibit similar features:
In some manner the type or nature of the user's input (text or event) is guessed; in effect the system attempts to infer the meaning (semantics) of a string, relying on its syntactic features
The system makes a guess of plausible tasks that the user might wish to perform given that input; that guess is hardwired into the system, so effectively it is not the system that makes the guess in real time, but it is the programmer of the system that made the guess when programming the system, way before the user got to interact with it.
The appropriate application, is automatically invoked upon the user's selection (whatever the user selected in the second step), instantiated with the proper input (whatever the system guessed in the first step).
Examples of the related art increase the user's convenience, but also include the following features:
The functionality has been designed into the application; the application's programmers have programmed (hard-wired) the system's response. As a result, this is not a flexible and scaleable approach because the range of possibilities has been decided during design time
The system has limited ways to accommodate the user's actions and wishes, nor it can accurately “perceive” the nature (semantics or meaning) of the input. Despite the different technologies used in each of the examples, the system relies on correctly guessing the meaning of the input by its syntactic features
The system employs a cause-effect (or trigger-response) mechanism, in the sense that a certain type of input results to a single action (application invocation). Complex user tasks, entail more complex workflows with complex sequences of events and actions, that would be impossible (technologically speaking) with the simplistic techniques used in these discussed examples.
In summary, during the current transitional state of personal computing, we observe attempts to speculate on the user's task by guessing the meaning of input based on its syntactic features, and invoking the right application with proper input; this approach is hardwired and brittle.
The Limitations of Personal Computing
We argue that Personal Computing exhibits substantial limitations, due to the following reasons:
As personal computing reaches the masses it is unreasonable to expect a high degree of computing experience and proficiency by the average non-expert user.
Personal computing is also problematic for the advanced user as well, because it can be time-consuming
Personal computing is an inadequate framework for the emerging paradigm of pervasive computing as described in the following.
Computing environments are becoming increasingly more complex for the average user. This is due to both the complexity and proliferation of applications and devices available to the users. Although the tasks that a user can perform in a computing environment have rapidly increased the required user proficiency has also increased. To make matters worse the user base of computer users have been rapidly expanding to reach users with very little (or none at all) computing expertise. The goal of the computing industry is to make computing available to the non-expert user. This goal is in conflict with the increasing complexity of computing environments.
Even when the end-user possesses substantial expertise, taking advantage of what is possible in today's computing environment takes considerable time. This is due to the fact that effectively advanced users have become “programmers” of their personal computing environments. Consider the more complex tasks that an advanced user might perform frequently, such as deciding to attend a talk that she sees announced on a web page: the user has to find the address of the place where the talk takes place, check for conflicts with her personal calendar, find directions to the location, create an entry in a calendaring application and so on. Doing so requires cutting and pasting between applications (assuming that the user is proficient enough to know which applications to use in order to accomplish the task) and executing a carefully choreographed workflow that uses available resources to accomplish the desired complex task. To make matters worse, if the user needs to perform the same or similar task in the future, she will have to do all of that again.
Personal computing, i.e., the idea of a user owning and operating a computer that runs the user's applications and “holds” the user's data is giving way to computing environments with less well-defined boundaries. As computers get permanently connected to computer networks the distinctions between local and remote applications and data collapse, or even worse, they are confusing to computer users. Moreover, users can access and interact with devices that are not computers in the sense of personal computers but still possess significant computing power and can serve the users' goals and help them accomplish a variety of tasks (cameras, printers, smart appliances, etc.). This new computing environment, often referred to as pervasive computing environment requires a fundamentally different approach to the problem of the user accomplishing things in it. For one thing, the average user may not even be aware of what is possible or feasible in such environments, as available resources (devices and applications) may be constantly changing, and moreover the user cannot rely on the convenience of a flexible and unified user interface for managing the interaction with such an environment. In other words, the personal computing approach is infeasible in a setting replete with devices and applications that are not a priori known to the user.